package cn.kattomy.shop.product.vo;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import org.hibernate.search.annotations.Analyze;
import org.hibernate.search.annotations.Analyzer;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Index;
import org.hibernate.search.annotations.Indexed;
import org.hibernate.search.annotations.Store;
import org.wltea.analyzer.lucene.IKAnalyzer;

import cn.kattomy.shop.attribute.vo.Attribute;
import cn.kattomy.shop.categorysecond.vo.CategorySecond;
import cn.kattomy.shop.image.vo.Image;

/**
 * `pid` int(11) NOT NULL AUTO_INCREMENT,
 * `pname` varchar(255) DEFAULT NULL,
 * `act_price` double DEFAULT NULL,
 * `shop_price` double DEFAULT NULL,
 * `image` varchar(255) DEFAULT NULL,
 * `pdesc` varchar(255) DEFAULT NULL,
 * `is_hot` int(11) DEFAULT NULL,
 * `pdate` datetime DEFAULT NULL,
 * `key_words` varchar(255) DEFAULT NULL,
 * `csid` int(11) DEFAULT NULL,
 * `bid` int(11) DEFAULT NULL,
 * `aid` int(11) DEFAULT NULL,
 * 商品类
 * @author kattomy
 *
 *@Indexed：让实体支持索引
 *@Analyzer ：设置分词器，使用的IK中文分词器
 *@DocumentID：索引文档ID
 *@Field ：索引字段，该注解默认属性值为
 *store=Store.NO：是否将数据存储在索引中，经实验无论store=Store.NO还是store=Store.YES都不会影响最终的搜索。
 *如果store=Store.NO值是通过数据库中获取，如果store=Store.YES值是直接从索引文档中获取。
 *index=Index.YES：是否索引
 *analyze=Analyze.YES：是否分词
 *
 */
@Indexed
@Analyzer(impl = IKAnalyzer.class)
public class Product {
	/**
	 * 商品的 id
	 */
	@DocumentId
	private Integer pid;
	/**
	 * 商品的 name
	 */
	@Field
	private String pname;
	/**
	 * 商品的活动价格
	 */
	private Double act_price;
	/**
	 * 商品的售价
	 */
	private Double shop_price;
	/**
	 * 商品的图片信息(属性取消|一对多对应 image)
	 */
//	private String image;
	
	/**
	 * 商品文字介绍
	 */
	@Field
	private String pdesc;
	/**
	 * 商品是否为热门商品
	 */
	private Integer is_hot;
	private Date pdate;
	
	@Field
	private String key_words;
	//二级分类的外键：使用二级分类的对象
	private CategorySecond categorySecond;
	
	/**
	 * 商品图片的集合
	 */
	private Set<Image> images = new HashSet<Image>();
	private Set<Attribute> attribute = new HashSet<Attribute>();
	
	public Set<Image> getImages() {
		return images;
	}
	public void setImages(Set<Image> images) {
		this.images = images;
	}
	public Set<Attribute> getAttribute() {
		return attribute;
	}
	public void setAttribute(Set<Attribute> attribute) {
		this.attribute = attribute;
	}
	public String getKey_words() {
		return key_words;
	}
	public void setKey_words(String key_words) {
		this.key_words = key_words;
	}
	public CategorySecond getCategorySecond() {
		return categorySecond;
	}
	public void setCategorySecond(CategorySecond categorySecond) {
		this.categorySecond = categorySecond;
	}
	public Integer getPid() {
		return pid;
	}
	public void setPid(Integer pid) {
		this.pid = pid;
	}
	public String getPname() {
		return pname;
	}
	public void setPname(String pname) {
		this.pname = pname;
	}
	public Double getAct_price() {
		return act_price;
	}
	public void setAct_price(Double act_price) {
		this.act_price = act_price;
	}
	public Double getShop_price() {
		return shop_price;
	}
	public void setShop_price(Double shop_price) {
		this.shop_price = shop_price;
	}
//	public String getImage() {
//		return image;
//	}
//	public void setImage(String image) {
//		this.image = image;
//	}
	public String getPdesc() {
		return pdesc;
	}
	public void setPdesc(String pdesc) {
		this.pdesc = pdesc;
	}
	public Integer getIs_hot() {
		return is_hot;
	}
	public void setIs_hot(Integer is_hot) {
		this.is_hot = is_hot;
	}
	public Date getPdate() {
		return pdate;
	}
	public void setPdate(Date pdate) {
		this.pdate = pdate;
	}
}
